#include "bsp.h"

void bspLed(uint8_t ledIndex, uint8_t state) {

    if (ledIndex < 1 || ledIndex > 3 ) {
        return;
    } else {
        switch(ledIndex) {
            case 1:
            state ? (HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET)) : (HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET));
            break;

            case 2:
            state ? (HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET)) : (HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET));
            break;

            case 3:
            state ? (HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET)) : (HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET));
            break;

            default:
            break;
        }
    }

}

void _test_bspLed(void) {
    while(1) {

        bspLed(1, 1);
        bspLed(2, 1);
        bspLed(3, 1);
        HAL_Delay(1000);

        bspLed(1, 0);
        bspLed(2, 0);
        bspLed(3, 0);
        HAL_Delay(1000);
    }
}

void bspTpPower(uint8_t state) {
    //state ? (LL_GPIO_ResetOutputPin(TP_VCCN_GPIO_Port, TP_VCCN_Pin)) :(LL_GPIO_SetOutputPin(TP_VCCN_GPIO_Port, TP_VCCN_Pin));
    state ? (HAL_GPIO_WritePin(TP_VCCN_GPIO_Port, TP_VCCN_Pin, GPIO_PIN_RESET)) : (HAL_GPIO_WritePin(TP_VCCN_GPIO_Port, TP_VCCN_Pin, GPIO_PIN_SET));
}

void _test_bspTpPower(void) {

    while(1) {
        bspTpPower(1);
        HAL_Delay(1000);

        bspTpPower(0);
        HAL_Delay(1000);
    }
}



void bspDemo(void) {
    //_test_bspLed();
    //_test_bspTpPower();

}

void HAL_GPIO_EXTI_Callback(uint16_t pin) {
    /* button */
    if(pin == KEY_Pin) {
        
        //HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
    }
    /* tp */
    if(pin == TP_INT_Pin ) {
        //HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);
    }
}